1单选某C语言程序中对数组变量b的声明为“intb[10][5];”,有一条for语句如下:for(i=0;i<10,i++)for(j=0;j<5;j++)sum+=b[i][j];假设执行到“sum+=b[i][j];”时,sum的值在EAX中,b[i][0]所在的地址在EDX中,j在ESI中,则“sum+=b[i][j];”所对应的指令(AT&T格式)可以是()。
A.addl0(%esi,%edx,4),%eax
B.addl0(%edx,%esi,4),%eax
C.addl0(%esi,%edx,2),%eax
D.addl0(%edx,%esi,2),%eax
2单选IA-32中指令“popl%ebp”的功能是()。
A.R[esp]←R[esp]-4,R[ebp]←M[R[esp]]
B.R[esp]←R[esp]+4,R[ebp]←M[R[esp]]
C.R[ebp]←M[R[esp]],R[esp]←R[esp]+4
D.R[ebp]←M[R[esp]],R[esp]←R[esp]-4
3单选IA-32中指令“movl8(%edx,%esi,4),%edx”的功能是()。
A.R[edx]←M[R[edx]+R[esi]*4+8]
B.R[edx]←M[R[esi]+R[edx]*4+8]
C.M[R[esi]+R[edx]*4+8]←R[edx]
D.M[R[edx]+R[esi]*4+8]←R[edx]
4单选设SignExt[x]表示对x符号扩展,ZeroExt[x]表示对x零扩展。IA-32中指令“movswl%cx,-20(%ebp)”的功能是()。
A.M[R[ebp]-20]←ZeroExt[R[cx]]
B.M[R[ebp]-20]←SignExt[R[cx]]
C.R[cx]←SignExt[M[R[ebp]-20]]
D.R[cx]←ZeroExt[M[R[ebp]-20]]
5单选假设R[ax]=FFE8H,R[bx]=7FE6H,执行指令“subw%bx,%ax”后,寄存器的内容和各标志的变化为()。
A.R[ax]=8002H,OF=1,SF=1,CF=0,ZF=0
B.R[bx]=8002H,OF=0,SF=1,CF=0,ZF=0
C.R[bx]=8002H,OF=1,SF=1,CF=0,ZF=0
D.R[ax]=8002H,OF=0,SF=1,CF=0,ZF=0
计算机系统基础(一):程序的表示、转换与链接
南京大学
军职在线答案
大学网课